package tp1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;

// Classe qui permet au serveur d'"annoncer" qu'il est en écoute et permet une connexion automatique.

public class ServeurAnnonce extends Thread {
    private final int port;
    MulticastSocket socketAnnonce=null;
    Serveur serveur = Serveur.getInstance();

    public ServeurAnnonce(int portAnnonceUDP) throws IOException {
        this.socketAnnonce = new MulticastSocket(portAnnonceUDP);
        this.port = portAnnonceUDP;
    }

    public void run() {
        serveur.debug("[ThreadAnnonce]");
        byte [] data;
        String message = null;
        while(true) {
            message = "SRV"+serveur.adresseMachine;
            data = message.getBytes();
            try {
                DatagramPacket sendPacket = new DatagramPacket(data,data.length, InetAddress.getByName(Serveur.adresseMulticast),port);
                socketAnnonce.send(sendPacket);
                serveur.debug("[ThreadAnnonce "+Serveur.adresseMulticast+":"+port+"] "+message);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                Thread.sleep(1000); // envoie le msg toutes les secondes
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
